package com.qk.mapper;

import com.qk.entity.Dept;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * @Author: zhangchuang
 * @Date: 2025/09/29 11:00
 * @Description: 部门Mapper
 */
@Mapper
public interface DeptMapper {

    /**
     * 添加部门
     *
     * @param dept 部门信息
     */
    @Insert("insert into dept(name, status, create_time, update_time) values(#{name}, #{status}, #{createTime}, #{updateTime})")
    void insertDept(Dept dept);

    /**
     * 分页查询部门
     *
     * @param name     部门名称
     * @param status   部门状态
     * @param offset   数据偏移量
     * @param pageSize 页大小
     * @return 分页结果PageResult<Dept>
     */
    List<Dept> selectPage(@Param("name") String name,
                          @Param("status") Integer status,
                          @Param("offset") Integer offset,
                          @Param("pageSize") Integer pageSize);

    /**
     * 获取部门总数
     *
     * @param name   部门名称
     * @param status 部门状态
     * @return 部门总数
     */
    Integer getTotal(@Param("name") String name, @Param("status") Integer status);

    /**
     * 根据id查询部门
     *
     * @param id 部门id
     * @return 部门信息
     */
    @Select("select id, name, status, create_time, update_time from dept where id = #{id}")
    Dept selectById(Integer id);

    /**
     * 修改部门信息
     *
     * @param dept 部门信息
     */
    @Update("update dept set name = #{name}, status = #{status}, update_time = #{updateTime} where id = #{id}")
    void updateById(Dept dept);

    /**
     * 根据id删除部门
     *
     * @param id 部门id
     */
    @Delete("delete from dept where id = #{id}")
    void deleteById(Integer id);

    /**
     * 查询所有部门
     *
     * @return 部门列表
     */
    @Select("select id, name, status, create_time, update_time from dept")
    List<Dept> selectAll();
}
